package main

import (
	"fmt"
)

// 结构体的多种初始化
type person struct {
	name string
	sex string
}

func main() {
	// 方法1
	var p = new(person)
	p.name = "肖"
	p.sex = "男"
	fmt.Println(p)
	// 方法2
	var p1 = &person{
		name: "肖",
		sex: "man",
	}
	fmt.Println(p1)
	// 方法3
	p2 := &person{
		"肖",
		"男",
	}
	fmt.Println(p2)
	fmt.Println(*p2)
	// 结构体内部的字段是连续的
	//&{肖 男}
	//&{肖 man}
	//&{肖 男}
	//{肖 男}
	var s struct{
		x int8
		y int8
		z int8
	}
	s.x = 10
	s.y = 20
	s.z = 30
	fmt.Printf("%p\n", &(s.x))
	fmt.Printf("%T\n", s.x)

	fmt.Printf("%p\n", &(s.y))
	fmt.Printf("%p\n", &(s.z))
	//0xc00012e0bc
	//0xc00012e0bd
	//0xc00012e0be


}
